<?php

require_once(BaseConfig::LoadClass('estadisticas.class.php'  ));
require_once(BaseConfig::LoadClass('tablas_llenado.class.php'));

class PAIDEA_Eje3_RelEgresoTitulacion extends Estadisticas {
  var $strNombreBase;
  
  function PAIDEA_Eje3_RelEgresoTitulacion($strNombreBase) {
    $this->strNombreBase = $strNombreBase;
  }
  
  function __GetConectaObject() {
    $oConecta = new ConectaP("", $this->strNombreBase);
    return $oConecta;
  }
  
  function __DoReporteTCPDF($arrReporte) {
    $oReportePDF = new ReportePDF($this, $arrReporte, "L");
    
    return $oReportePDF->DoRender();
  }
  
  function IncluirHTMLDespues() {
//    return TablasLlenado::__TemplateSeleccionCarrera($this->strNombreBase, Variables::GetOption('generaciones'), 1, count($this->arrInfoReporte));
    return TablasLlenado::__TemplateSeleccionCarrera($this->strNombreBase, Variables::GetOption('generaciones'), 1, count($this->arrInfoReporte), $this->__ObtenerFormaOpcionesGrafica(false, false, true));
  }
  
  function __ArreglarDatosPrevioGrafica() {
    $this->arrInfoGrafica = $this->arrInfoReporte;
    unset($this->arrInfoGrafica["porc_tit"]);
    return parent::__ArreglarDatosPrevioGrafica();
  }
  
  function ObtenerGrafica($strTipoGrafica = "stacked_column") {
    $strPagina  = "";
    $strPagina .= parent::ObtenerGrafica($strTipoGrafica);
    $strPagina .= "<table class='TablaReportes' width='100%' border='1'>";
    $strPagina .= TablasLlenado::__TemplateSeleccionCarrera(
      $this->strNombreBase, 
      Variables::GetOption('generaciones'), 
      1, 1, 
      $this->__ObtenerFormaOpcionesGrafica()
    );
    $strPagina .= "</table>";
    
    return $strPagina;
  }
  
  function __DefaultArregloInfo() {
    $arrResp = array();
    
    $arrResp["generacion"]["Nombre"] = "Generacion";
    $arrResp["generacion"]["Tipo"  ] = "C2";
    $arrResp["periodo"   ]["Nombre"] = "Ciclo Escolar";
    $arrResp["periodo"   ]["Tipo"  ] = "C";
    $arrResp["totales"   ]["Nombre"] = "# de Alumnos";
    $arrResp["totales"   ]["Tipo"  ] = "Ix";
    $arrResp["egresados" ]["Nombre"] = "# de Alumnos Egresados";
    $arrResp["egresados" ]["Tipo"  ] = "Ix";
    $arrResp["titulados" ]["Nombre"] = "# de Alumnos Titulados";
    $arrResp["titulados" ]["Tipo"  ] = "Ix";
    $arrResp["porc_tit"  ]["Nombre"] = "% de Alumnos Titulados";
    $arrResp["porc_tit"  ]["Tipo"  ] = "D";
    
    return $arrResp;
  }
  
  function __DefaultConsultaIni() {
    $strConsulta  = "SELECT 1";
    return $strConsulta;
  }
  
  function InitDefaults($strNombreReporte = "", $strOpAgrupar = "") {
    if(!$strNombreReporte) {
      $arrCarreras = TablasLlenado::GetArrayNombresCarreras();
      if($this->strNombreBase) {
        $strNombreReporte = "Relacion Egreso Titulacion para " . $arrCarreras[$this->strNombreBase];
      } else {
        $strNombreReporte = "Relacion Egreso Titulacion";
      }
    }
    $this->Inicializar($strNombreReporte, $this->__DefaultArregloInfo(), $this->__DefaultConsultaIni(), $strOpAgrupar, $this->__DefaultDifHeader(), $this->__DefaultDifColors());
    $this->strLeyendaSubTotal = "Total Generacion";
  }
  
  function ManejarReporte($arrReporte) {
    unset($arrReporte);
    $arrReporte = array();
    // Lo primero que necesitamos es la conexion a la base de datos
    $oConecta = $this->__GetConectaObject();
    
    $intContador = 0;
    
    if(is_array(Variables::GetOption('generaciones'))) {
      foreach(Variables::GetOption('generaciones') as $strGenAct) {
        for($intPeriodoAct = $strGenAct + 4; $intPeriodoAct <= date("Y"); $intPeriodoAct++) {
          // Luego necesitamos obtener los alumnos totales
          $strConsulta  = "";
          $strConsulta .= "SELECT ";
          $strConsulta .= "  COUNT(DISTINCT(alm_numero_cuenta)) AS totales ";
          $strConsulta .= "FROM inscripcion ";
          $strConsulta .= "WHERE prd_id LIKE '{$intPeriodoAct}%1' ";
          $strConsulta .= "  AND ins_movimiento = 'A' ";
          $strConsulta .= "  AND alm_numero_cuenta IN ( ";
          $strConsulta .= "    SELECT ";
          $strConsulta .= "      DISTINCT alm_numero_cuenta ";
          $strConsulta .= "    FROM view_estadisticas_egresados ";
          $strConsulta .= "    WHERE generacion = {$strGenAct} ";
          $strConsulta .= "  ) ";

          $oConecta->Consulta($strConsulta);
          $intTotalAlumnos = $oConecta->Field('totales');

          $strConsulta  = "";
          $strConsulta .= "SELECT ";
          $strConsulta .= "  COUNT(*) AS totales ";
          $strConsulta .= "FROM view_estadisticas_egresados ";
          $strConsulta .= "WHERE generacion = $strGenAct ";
          $strConsulta .= "  AND periodo LIKE '{$intPeriodoAct}%' ";
          $strConsulta .= "  AND egresado = 't' ";

          $oConecta->Consulta($strConsulta);
          $intTotalEgresados = $oConecta->Field('totales');

          $strConsulta  = "";
          $strConsulta .= "SELECT ";
          $strConsulta .= "  COUNT(*) AS totales ";
          $strConsulta .= "FROM view_estadisticas_egresados ";
          $strConsulta .= "WHERE generacion = $strGenAct ";
          $strConsulta .= "  AND periodo LIKE '{$intPeriodoAct}%' ";
          $strConsulta .= "  AND egresado = 't' ";
          $strConsulta .= "  AND alm_numero_cuenta IN ( ";
          $strConsulta .= "    SELECT ";
          $strConsulta .= "      DISTINCT alm_numero_cuenta ";
          $strConsulta .= "    FROM titulados ";
          $strConsulta .= "  ) ";

          $oConecta->Consulta($strConsulta);
          $intTotalTitulados = $oConecta->Field('totales');



          $arrReporte[$intContador]["generacion"] = $strGenAct        ;
          $arrReporte[$intContador]["periodo"   ] = $intPeriodoAct    ;
          $arrReporte[$intContador]["totales"   ] = $intTotalAlumnos  ;
          $arrReporte[$intContador]["egresados" ] = $intTotalEgresados;
          $arrReporte[$intContador]["titulados" ] = $intTotalTitulados;
          if($intTotalEgresados) {
            $arrReporte[$intContador]["porc_tit"  ] = ($intTotalTitulados / $intTotalEgresados) * 100;
          } else {
            $arrReporte[$intContador]["porc_tit"  ] = 0;
          }

          $intContador++;
        }
      }
    }
    
    return $arrReporte;
  }
}

?>